Image capture and ordering

ABSTRACT

One or more techniques and/or systems are provided for ordering images for panorama stitching and/or for providing a focal point indicator for image capture. For example, one or more images, which may be stitched together to create a panorama of a scene, may be stored within an image stack according to one or more ordering preferences, such as where manually captured images are stored within a first/higher priority region of the image stack as compared to automatically captured images. One or more images within the image stack may be stitched according to a stitching order to create the panorama, such as using images in the first region for a foreground of the panorama. Also, a current position of a camera may be tracked and compared with a focal point of a scene to generate a focal point indicator to assist with capturing a new/current image of the scene.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a Continuation patent application of and claims thebenefit of U.S. Non-Provisional patent application Ser. No. 15/603,568,filed May 24, 2017 and titled “Image Capture and Ordering,” which inturn claims priority to U.S. Non-Provisional patent application Ser. No.13/826,091, filed Mar. 14, 2013 and titled “Image Capture and Ordering,”the disclosures of each of which are hereby incorporated herein byreference in their entirety.

BACKGROUND

Many users may create image data using various devices, such as digitalcameras, tablets, mobile devices, smart phones, etc. For example, a usermay capture an image of a beach using a mobile phone while on vacation.The user may upload the image to an image sharing website, and may sharethe image with other users. In an example of image data, one or moreimages may be stitched together to create a panorama of a scene depictedby the one or more images. If the one or more images are stitchedtogether in an arbitrary order, then the panorama may comprise seamlines (e.g., resulting from an object moving within the scene duringimage capture, and thus being in different locations in differentimages) or other undesirable effects. If the one or more images werecaptured from viewpoints having unaligned focal points, then parallaxerrors may result in the panorama, for example.

SUMMARY

This summary is provided to introduce a selection of concepts in asimplified form that are further described below in the detaileddescription. This summary is not intended to identify key factors oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

Among other things, one or more systems and/or techniques for orderingimages for panorama stitching and/or for providing a focal pointindicator for image capture are provided herein.

In some embodiments of ordering images for panorama stitching, an imagestack, comprising one or more images that may be stitched together togenerate a panorama, is maintained. For example, a user may havecaptured eight images depicting a renovated basement from variousviewpoints. The eight images and/or subsequently captured images of therenovated basement may be maintained according to a particular orderingwithin the image stack, and may be used for generating a panorama of therenovated basement. The image stack may be segmented into one or moreregions. In an example, a region may correspond to a single positionwithin the image stack (e.g., a first region corresponds to a topposition of the image stack, a second region corresponds to a bottomposition of the image stack, and one or more additional regionscorrespond to positions between the top position and the bottomposition). In another example, a region may correspond to multiplepositions within the image stack (e.g., a first region corresponds to afirst half of the image stack (e.g., top four images) and a secondregion corresponds to a second half of the image stack (e.g., bottomfour images)).

A first ordering preference may be associated with a first region of theimage stack (e.g., a top position of the image stack); a second orderingpreference may be associated with a second region of the image stack(e.g., a non-top position of the image stack); and/or other orderingpreferences may be associated with other regions of the image stack. Inan example of adding a current image to the image stack, the firstordering preference corresponds to manually captured image criteria andthe second ordering preference corresponds to automatically capturedimage criteria. If a current image is a manually captured image (e.g., auser manually captures a new image of the renovated basement), then thecurrent image is added to the first region of the image stack (e.g., thetop position of the image stack) based upon the first orderingpreference. If the current image is an automatically captured image(e.g., a camera automatically captures the image of the renovatedbasement), then the current image is added to the second region of theimage stack (e.g., a non-top position of the image stack) based upon thesecond ordering preference. It may be appreciated that the firstordering preference, the second ordering preference, and/or otherordering preference may correspond to other types of preferences, suchas temporal criteria (e.g., recently captured images are added to thefirst region, while previously captured images are added to the secondregion). In this way, the image stack may be maintained by orderingimages within the image stack.

During generation of the panorama, the one or more images within theimage stack may be stitched according to a stitching order. In anexample, the stitching order specifies that the first region has astitching priority relative to the second region. The stitching ordermay, for example, associate the first region with a foreground bias andthe second region with a background bias. For example, images having arelatively higher priority, such as relatively newer images or manuallycaptured images, may be used to stitch the foreground, while imageshaving a relatively lower priority, such as relatively older images orautomatically captured images, may be used to stitch the background. Itwill be appreciated, however, that a foreground bias and/or a backgroundbias does not necessarily imply a hard ordering towards foregroundand/or background. Rather, a foreground bias may, for example, imply anincreased probability that an image will be visible (e.g., in theforeground or elsewhere), and a background bias may, for example, implya decreased probability that an image will be visible (e.g., in thebackground or elsewhere). It may be appreciated that the stitching ordermay correspond to other ordering priorities or portions of the panorama.

In some embodiments of providing a focal point indictor for imagecapture, a current position of a camera may be tracked (e.g., astandalone camera, a camera associated with a computing device, etc.).For example, positional data and/or orientation data of the camera maybe tracked in real-time while the camera is used to capture one or moreimages depicting a scene (e.g., one or more images of a renovatedbasement). The one or more images may be used to generate avisualization of the scene, such as a spin movie, a panorama, anon-panorama visualization, etc. A focal point indicator may be providedthrough the camera to aid a user in capturing a current image of thescene (e.g., a current image depicting a portion of the renovatedbasement not already depicted by one or more previously capture images;a current image captured from a focal point of the scene; etc.). Forexample, the current position of the camera may be compared with a focalpoint of the scene depicted by one or more previously captured images.Based upon the comparison, a focal point indicator may be generated. Thefocal point indicator may be provided during capture of a current imageof the scene. For example, a visual indicator (e.g., an on/off spotindicator, a target icon, etc.) may be displayed through the camera toindicate a viewpoint (e.g., associated with a cameraposition/orientation) from which the user may capture the current image.In this way, the user may be aided in capturing one or more images usedto create a visualization of the scene (e.g., so that a current image iscaptured from a focal point corresponding to a focal point of one ormore previously captured images).

To the accomplishment of the foregoing and related ends, the followingdescription and annexed drawings set forth certain illustrative aspectsand implementations. These are indicative of but a few of the variousways in which one or more aspects may be employed. Other aspects,advantages, and novel features of the disclosure will become apparentfrom the following detailed description when considered in conjunctionwith the annexed drawings.

DESCRIPTION OF THE DRAWINGS

FIG. 1 is a flow diagram illustrating an exemplary method of orderingimages for panorama stitching.

FIG. 2 is a component block diagram illustrating an exemplary system forordering images for panorama stitching.

FIG. 3 is a component block diagram illustrating an exemplary system forordering images for panorama stitching.

FIG. 4 is a component block diagram illustrating an exemplary system forordering images for panorama stitching.

FIG. 5 is a component block diagram illustrating an exemplary system forreordering images within an image stack for panorama stitching.

FIG. 6 is a flow diagram illustrating an exemplary method of providing afocal point indicator for image capture.

FIG. 7 is a component block diagram illustrating an exemplary system forproviding a focal point indicator for image capture.

FIG. 8 is a component block diagram illustrating an exemplary system forproviding a focal point indicator and/or a focal point adjustmentsuggestion for image capture.

FIG. 9 is an illustration of an exemplary computing device-readablemedium wherein processor-executable instructions configured to embodyone or more of the provisions set forth herein may be comprised.

FIG. 10 illustrates an exemplary computing environment wherein one ormore of the provisions set forth herein may be implemented.

DETAILED DESCRIPTION

The claimed subject matter is now described with reference to thedrawings, wherein like reference numerals are generally used to refer tolike elements throughout. In the following description, for purposes ofexplanation, numerous specific details are set forth in order to providean understanding of the claimed subject matter. It may be evident,however, that the claimed subject matter may be practiced without thesespecific details. In other instances, structures and devices areillustrated in block diagram form in order to facilitate describing theclaimed subject matter.

An embodiment of ordering images for panorama stitching is illustratedby an exemplary method 100 of FIG. 1. At 102, the method starts. At 104,an image stack, comprising one or more images that may be stitchedtogether to generate a panorama, is maintained (e.g., image stack 210 ofFIG. 2). For example, the one or more images may depict a scene of akitchen renovation project from various viewpoints. The one or moreimages may be stitched together to create a panorama depicting thekitchen renovation project (e.g., a user may visually explore thekitchen renovation project based upon multidimensional navigation in thepanorama). An ordering of the one or more images and/or subsequentlycaptured images may be maintained within the image stack. In this way,images within the image stack may be efficiently stitched togetheraccording to a stitching order to generate the panorama (e.g.,relatively more significant images may be used to represent relativelyprominent features of the panorama, such as in a foreground of thepanorama).

In an example, a current image may be added to the image stack basedupon one or more ordering preferences. At 106, responsive to the currentimage corresponding to a first ordering preference, the current image isadded to a first region of the image stack. In an example where thefirst ordering preference corresponds to a later in time criteria, thecurrent image is added to a top position of the image stack based uponthe current image having a relatively newer timestamp (e.g., example 300of FIG. 3). In another example where the first ordering preferencecorresponds to a manually captured image criteria, the current image isadded to a first half of the image stack based upon the current imagehaving been manually captured by a user (e.g., example 400 of FIG. 4).At 108, responsive to the current image corresponding to a secondordering preference, the current image is added to a second region ofthe image stack. In an example where the second ordering preferencecorresponds to an earlier in time criteria, the current image is addedto a bottom position of the image stack based upon the current imagehaving a relatively older timestamp (e.g., example 300 of FIG. 3). Inanother example where the second ordering preference corresponds to anautomatically captured image, the current image is added to a secondhalf of the image stack based upon the current image having beenautomatically captured by a camera device (e.g., example 400 of FIG. 4).It may be appreciated that other ordering preferences may be specifiedand/or other regions may be designated for the image stack.

In an example, one or more images within the image stack may bereordered based upon input modifying a position of an image within theimage stack. For example, a user may have captured an image depicting arelatively significant portion of the kitchen renovation project (e.g.,an image depicting a new kitchen island). However, the image may have arelatively low stitching priority based upon the image corresponding toan ordering preference that placed the image into a region of the imagestack having a relatively lower stitching priority (e.g., the image mayhave been automatically captured). Thus, the user may indicate that theimage is to be moved into a region having a relatively higher stitchingpriority (e.g., the user may assign a relatively high rating to theimage; the user may drag and drop the image within an image stack userinterface; the user may designate the image as significant to the user;etc.). Accordingly, the image may be repositioned within the imagestack. In an example, repositioning the image may result in anotherimage being reassigned from a region to another region (e.g., a firstimage may be reassigned from the first region to the second region; asecond image may be reassigned from the second region to the firstregion or to a third region; etc.).

At 110, the one or more images in the image stack are stitched accordingto a stitching order to generate the panorama. The stitching order mayspecify that the first region has a stitching priority relative to thesecond region. In an example, one or more images within the first regionmay be stitched before one or more images within the second region. Inanother example, one or more images within the first region are used tostitch together a foreground of the panorama, while one or more imageswithin the second region are used to stitch together a background of thepanorama. In this way, the panorama may be generated by stitching one ormore images from the image stack according to the stitching order. At112, the method ends.

FIG. 2 illustrates an example of a system 200 configured for orderingimages for panorama stitching. The system 200 comprises an image stackcomponent 204 and/or a stitching component 216. The image stackcomponent 204 is configured to maintain an image stack 210 comprisingone or more images that may be stitched together by the stitchingcomponent 216 to generate a panorama 220 of a scene depicted by the oneor more images. For example, the image stack component 204 is configuredto store a set of images 202 within the image stack 210 based upon oneor more ordering preferences, such as a first ordering preference 206, asecond ordering preference 208, and/or other ordering preferences notillustrated. In an example, the first ordering preference 206corresponds to an earlier in time criteria, such that one or morecurrent images having relatively older timestamps may be added into afirst region 212, having a relatively higher stitching priority, of theimage stack 210 (e.g., image (A), image (B), image (C), and image (D)have relatively older timestamps compared with image (E), image (F),image (G), and image (H)). The second ordering preference 208corresponds to a later in time criteria, such that one or more currentimages having relatively newer timestamps may be added into a secondregion 214, having a relatively lower stitching priority, of the imagestack 210 (e.g., image (E), image (F), image (G), and image (H) haverelatively newer timestamps compared with image (A), image (B), image(C), and image (D)). In this way, the set of images 202 may be storedwithin one or more regions of the image stack 210 based upon the one ormore ordering preferences.

It will be appreciated that, as provided herein, more than just tworegions (or merely a single region) may be comprised within an imagestack and/or that differing numbers of images may be comprised withindifferent regions, such as a first number of images in a first regionand a second different number of images in a second region. Variousordering preferences may exist, where an ordering preference may pertainto one or more regions and/or one or more images in an image stack.Ordering preferences maybe weighted, given priority relative to oneanother, etc. such that a location of an image in the image stack may bea function of multiple ordering preferences, for example. A manuallycaptured image may be placed in a first, top, prioritized, etc. regionrelative to a second non-manually captured image, for example, even ifthe non-manually captured image was captured more recently than themanually captured image, for example.

The stitching component 216 is configured to stitch one or more imageswithin the image stack 210 according to a stitching order 218 togenerate the panorama 220. In an example, the stitching order 218 mayspecify that images within the first region 212 are to be stitchedbefore images within the second region 214. In another example, thestitching order 218 may specify that images within the first region 212are to be stitched for relatively prominent features of the panorama 220(e.g., foreground bias), and that images within the second region 214are to be stitched for relatively less prominent features of thepanorama 220 (e.g., background bias). In this way, the panorama 220 maybe generated by stitching one or more images within the image stack 210based upon the stitching order 218.

FIG. 3 illustrates an example of a system 300 configured for orderingimages for panorama stitching. The system 300 comprises an image stackcomponent 304 and/or a stitching component 316. The image stackcomponent 304 is configured to maintain an image stack 310 comprisingone or more images that may be stitched together by the stitchingcomponent 316 to generate a panorama 320 of a scene depicted by the oneor more images. For example, the image stack component 304 is configuredto store a set of images 302 within the image stack 310 based upon oneor more ordering preferences, such as a first ordering preference 306, asecond ordering preference 308, and/or other ordering preferences notillustrated. In an example, the first ordering preference 306corresponds to a later in time criteria, such that a current imagehaving a relatively newer timestamp may be added into a first region312, having a relatively higher stitching priority, of the image stack310 (e.g., image (H) has a relatively recent timestamp compared withother images within the image stack 310). The second ordering preference308 corresponds to an earlier in time criteria, such that a currentimage having relatively older timestamp may be added into a secondregion 314, having a relatively lower stitching priority, of the imagestack 310 (e.g., image (A) has a relatively older timestamp comparedwith other images within the image stack 310). In this way, the set ofimages 302 may be stored within one or more regions of the image stack310, such as other regions 322, based upon the one or more orderingpreferences.

The stitching component 316 is configured to stitch one or more imageswithin the image stack 310 according to a stitching order 318 togenerate the panorama 320. In an example, the stitching order 318 mayspecify that images within the first region 312 are to be stitchedfirst, images within other regions 322 are to be stitched after imageswithin the first region 312, and images within the second region 314 areto be stitched after images within the other regions 322. In anotherexample, the stitching order 318 may specify that images within thefirst region 312 are to be stitched for relatively prominent features ofthe panorama 320 (e.g., foreground bias), images within the secondregion 314 are to be stitched for relatively less prominent features ofthe panorama (e.g., background bias), and that images within the otherregions 322 can be stitch for any features of the panorama 320. In thisway, the panorama 320 may be generated based upon stitching one or moreimages within the image stack 310 based upon the stitching order 318.

FIG. 4 illustrates an example of a system 400 configured for orderingimages for panorama stitching. The system 400 comprises an image stackcomponent 404 and/or a stitching component 416. The image stackcomponent 404 is configured to maintain an image stack 410 comprisingone or more images that are to be stitched together by the stitchingcomponent 416 to generate a panorama of a scene depicted by the one ormore images. For example, the image stack component 404 is configured tostore a set of images 402 within the image stack 410 based upon one ormore ordering preferences, such as a first ordering preference 406, asecond ordering preference 408, and/or other ordering preferences notillustrated. In an example, the first ordering preference 406corresponds to a manually captured image criteria, such that one or morecurrent images that are manually captured may be added into a firstregion 412, having a relatively higher stitching priority, of the imagestack 410 (e.g., image (L), image (M), and image (N) may have beenmanually captured by a user). The second ordering preference 408corresponds to an automatically captured image criteria, such that oneor more current images that are automatically captured may be added intoa second region 414, having a relatively lower stitching priority, ofthe image stack 410 (e.g., image (O), image (P), image (Q), and image(R) may have been automatically captured by a camera). In this way, theset of images 402 may be stored within one or more regions of the imagestack 410 based upon the one or more ordering preferences.

The stitching component 416 is configured to stitch one or more imageswithin the image stack 410 according to a stitching order 418 togenerate the panorama 420. In an example, the stitching order 418 mayspecify that images within the first region 412 are to be stitchedbefore images within the second region 414. In another example, thestitching order 418 may specify that images within the first region 412are to be stitched for relatively prominent features of the panorama 420(e.g., foreground bias), and that images within the second region 414are to be stitched for relatively less prominent features of thepanorama 420 (e.g., background bias). In this way, the panorama 420 maybe generated based upon stitching one or more images within the imagestack 410 based upon the stitching order 418.

FIG. 5 illustrates an example of a system 500 configured for reorderingimages within an image stack for panorama stitching. The system 500 maycomprise an image stack component 510. The image stack component 510 maybe configured to maintain an image stack (e.g., image stack 502 a beforereordering and/or image stack 502 b after reordering) comprising one ormore images that may be stitched according to a stitching order togenerate a panorama. The image stack may comprise a first region 504 anda second region 506. The one or more images within the first region 504may have a relatively higher stitching priority than one or more imageswithin the second region 506. The image stack component 510 may beconfigured to maintain an order of images within the image stack. Forexample, the image stack component 510 may store image (L), image (M),and image (N) within the first region 504 of the image stack 502 a basedupon such images being manually captured. The image stack component 510may store image (O), image (P), image (Q), and image (R) within thesecond region 506 of the image stack 502 a based upon such image beingautomatically captured.

The image stack component 510 may be configured to reorder one or moreimages within the image stack 502 a based upon input indicating that aposition of an image within the image stack 502 is to be modified,resulting in the image stack 502 b. For example, a user may indicatethat image (M) is a relatively insignificant image that was manuallytaken by the user. The indication may be interpreted as input indicatingthat a position of image (M) 508 a within the image stack 502 a is to bemodified. Responsive to the input, the image stack component 510 mayreassign the image (M) 508 a from the first region 504 to the secondregion 506 as image (M) 508 b of image stack 502 b because the secondregion 506 has a relatively lower stitching priority than the firstregion 504. In this way, image (M) 508 b may be reassigned to the secondregion 506 of the image stack 502 b. It may be appreciated that imagestack 502 a and image stack 502 b are the same image stack, but depictthe time stack before and after the repositioning of image (M).

An embodiment of providing a focal point indicator for image capture isillustrated by an exemplary method 600 of FIG. 6. In an example, acamera may be used to capture one or more images of a scene (e.g.,images depicting a renovated kitchen), which may be used to generate avisualization of the scene (e.g., a spin movie, a panorama, anon-panorama visualization, and/or other visualizations). Because morethan one image may be used to generate the visualization, guidance maybe provided for image capture (e.g., an indicator may be provided to auser, which may indicate a viewpoint from which a next image may becaptured so that the scene is adequately represented or “seen” by imagesused to generate the visualization of the scene, otherwise thevisualization may be incomplete because of missing image information).At 602, the method starts. At 604, a current position of a camera istracked (e.g., a standalone camera or a camera integrated into anothercomputing device, such as a tablet or mobile device). For example,positional data and/or orientation data of the camera are tracked todetermine the current position (e.g., data derived from one or morepreviously captured images; data derived from GPS, data derived from agyroscope or other positional tracking device; etc.).

At 606, the current position may be compared with a focal point of thescene, derived from one or more previously captured images, to generatea focal point indicator. The focal point of the scene may be derivedfrom respective focal points of the one or more previously capturedimages of the scene. If the current position of the camera indicatesthat the camera is viewing the scene from a viewpoint that correspondsto the focal point of the scene, then the focal point indicator mayindicate that the camera is in a correct position for capture of acurrent image. However, if the current position of the camera indicatesthat the camera is not viewing the scene from a viewpoint thatcorresponds to the focal point of the scene, then the focal pointindicator may indicate that the camera is to be repositioned to a newviewpoint that corresponds to the focal point of the scene so that acurrent image may be captured from the new viewpoint.

At 608, the focal point indicator may be provided during capture of acurrent image of the scene. In an example, responsive to the currentposition corresponding to the focal point, the focal point indicator isnot displayed through the camera because the camera is in a correctposition. In another example, responsive to the current positioncorresponding to the focal point, the focal point indicator is displayedthrough the camera to indicate to a user that the camera is in a correctposition. In another example, responsive to the current position notcorresponding to the focal point, the focal point indicator is displayedto indicate that the camera is to be moved from the current position toa new position corresponding to the focal point (e.g., an on/off spotindicator may be displayed; a hot/cold indicator may be displayed; afocal point adjustment suggestion such as an arrow indicating adirection with which to move the camera may be displayed; and/or aplethora of other indicators may be provided to aid the user inrepositioning the camera). In this way, the current image and the one ormore previously captured images may be stitched based upon the focalpoint of the scene to generate a visualization of the scene. In someembodiments, the user may desire to stop capturing images for thevisualization, and start capturing images for a new visualization. Apanorama transition indictor may be provided to aid the user inrepositioning the camera in order to transition into capturing imagesfor the new visualization. The panorama transition indicator mayindicate suggested camera movement to initiate image capture for the newvisualization. At 610, the method ends.

FIG. 7 illustrates an example of a system 700 configured for providing afocal point indicator 716 for image capture. The system 700 may beassociated with a camera 702 used to capture one or more imagesdepicting a scene (e.g., an outdoor space comprising a tree, a sun, acloud, a building, etc.). The system 700 may comprise a camera positioncomponent 708. The camera position component 708 may have access to oneor more previously captured images 712 of the scene (e.g., a firstpreviously captured image depicting the scene from a northern facingviewpoint, a second previously captured image depicting the scene from asoutheastern facing viewpoint, a third previously captured imagedepicting a ground view of the scene, a fourth previously captured imagedepicting a sky view of the scene, etc.).

In an example, the one or more previously captured images 712 may notdepict the scene from a western facing viewpoint, and thus a user mayattempt to capture a current image of the scene from the western facingviewpoint using the camera 702. The camera position component 708 mayguide the user in capturing the current image so that the current imageis captured from a focal point corresponding to a focal point of thescene 710 derived from focal points of the one or more previouslycaptured image 712. In particular, the camera position component 708tracks a current position 706 of the camera 702. The camera positioncomponent 708 may compare the current position 706 with the focal pointof the scene 710 to generate the focal point indicator 716. The cameraposition component 708 may be configured to provide 714 the focal pointindicator 716 and/or a current camera position indicator 704, which mayaid the user in repositioning the camera 702 so that a current positionof the camera 702 corresponds to the focal point of the scene 710 (e.g.,such that the current camera position indicator 704 is aligned with thefocal point indicator 716). In an example, the focal point indicator 716may be modified (e.g., increased in size, reduced in size, displayed,hidden, etc.) based upon repositioning of the camera 702 (e.g., thefocal point indicator 716 may be increased (or decreased) in size as acurrent position of the camera has an increased correspondence to thefocal point of the scene 710; the focal point indicator 716 may bedecreased (or increased) in size as a current position of the camera 702has a decreased correspondence to the focal point of the scene 710; thefocal point indicator 716 may be hidden when a current position of thecamera 702 corresponds to the focal point of the scene 710 within athreshold correspondence; etc.).

FIG. 8 illustrates an example of a system 800 configured for providing afocal point indicator 816 and/or a focal point adjustment suggestion 818for image capture. The system 800 may be associated with a camera 802used to capture one or more images depicting a scene. The system 800 maycomprise a camera position component 808. The camera position component808 may have access to one or more previously captured images 812 of thescene. The camera position component 808 may guide the user in capturinga current image of the scene from a viewpoint corresponding to a focalpoint of the scene 810. For example, the camera position component 808may compare a current position 806 of the camera 802 to the focal pointof the scene 810. The camera position component 808 may be configured toprovide 814 the focal point indicator 816, the focal point adjustmentsuggestion 818, and/or a current camera position indicator 804. Thefocal point adjustment suggestion 818 (e.g., an arrow, difference imageand/or other user interface indicator) may aid the user in repositioningthe camera 802 so that a current position of the camera 802 correspondsto the focal point of the scene 810 (e.g., such that the current cameraposition indicator 804 is aligned with the focal point indicator 816).

Still another embodiment involves a computer-readable medium comprisingprocessor-executable instructions configured to implement one or more ofthe techniques presented herein. An example embodiment of acomputer-readable medium or a computer-readable device that is devisedin these ways is illustrated in FIG. 9, wherein the implementation 900comprises a computer-readable medium 908, such as a CD-R, DVD-R, flashdrive, a platter of a hard disk drive, etc., on which is encodedcomputer-readable data 906. This computer-readable data 906, such asbinary data comprising at least one of a zero or a one, in turncomprises a set of computer instructions 904 configured to operateaccording to one or more of the principles set forth herein. In someembodiments, the processor-executable computer instructions 904 areconfigured to perform a method 902, such as at least some of theexemplary method 100 of FIG. 1 and/or at least some of the exemplarymethod 600 of FIG. 6, for example. In some embodiments, theprocessor-executable instructions 904 are configured to implement asystem, such as at least some of the exemplary system 200 of FIG. 2, atleast some of the exemplary system 300 of FIG. 3, at least some of theexemplary system 400 of FIG. 4, at least some of the exemplary system500 of FIG. 5, at least some of the exemplary system 700 of FIG. 7,and/or at least some of the exemplary system 800 of FIG. 8, for example.Many such computer-readable media are devised by those of ordinary skillin the art that are configured to operate in accordance with thetechniques presented herein.

As used in this application, the terms “component”, “module,” “system”,“interface”, and the like are generally intended to refer to acomputer-related entity, either hardware, a combination of hardware andsoftware, software, or software in execution. For example, a componentincludes a process running on a processor, a processor, an object, anexecutable, a thread of execution, a program, or a computer. By way ofillustration, both an application running on a controller and thecontroller can be a component. One or more components residing within aprocess or thread of execution and a component is localized on onecomputer or distributed between two or more computers.

Furthermore, the claimed subject matter is implemented as a method,apparatus, or article of manufacture using standard programming orengineering techniques to produce software, firmware, hardware, or anycombination thereof to control a computer to implement the disclosedsubject matter. The term “article of manufacture” as used herein isintended to encompass a computer program accessible from anycomputer-readable device, carrier, or media. Of course, manymodifications may be made to this configuration without departing fromthe scope or spirit of the claimed subject matter.

FIG. 10 and the following discussion provide a brief, generaldescription of a suitable computing environment to implement embodimentsof one or more of the provisions set forth herein. The operatingenvironment of FIG. 10 is only an example of a suitable operatingenvironment and is not intended to suggest any limitation as to thescope of use or functionality of the operating environment. Examplecomputing devices include, but are not limited to, personal computers,server computers, hand-held or laptop devices, mobile devices, such asmobile phones, Personal Digital Assistants (PDAs), media players, andthe like, multiprocessor systems, consumer electronics, mini computers,mainframe computers, distributed computing environments that include anyof the above systems or devices, and the like.

Generally, embodiments are described in the general context of “computerreadable instructions” being executed by one or more computing devices.Computer readable instructions are distributed via computer readablemedia as will be discussed below. Computer readable instructions areimplemented as program modules, such as functions, objects, ApplicationProgramming Interfaces (APIs), data structures, and the like, thatperform particular tasks or implement particular abstract data types.Typically, the functionality of the computer readable instructions arecombined or distributed as desired in various environments.

FIG. 10 illustrates an example of a system 1000 comprising a computingdevice 1012 configured to implement one or more embodiments providedherein. In one configuration, computing device 1012 includes at leastone processing unit 1016 and memory 1018. In some embodiments, dependingon the exact configuration and type of computing device, memory 1018 isvolatile, such as RAM, non-volatile, such as ROM, flash memory, etc., orsome combination of the two. This configuration is illustrated in FIG.10 by dashed line 1014.

In other embodiments, device 1012 includes additional features orfunctionality. For example, device 1012 also includes additional storagesuch as removable storage or non-removable storage, including, but notlimited to, magnetic storage, optical storage, and the like. Suchadditional storage is illustrated in FIG. 10 by storage 1020. In someembodiments, computer readable instructions to implement one or moreembodiments provided herein are in storage 1020. Storage 1020 alsostores other computer readable instructions to implement an operatingsystem, an application program, and the like. Computer readableinstructions are loaded in memory 1018 for execution by processing unit1016, for example.

The term “computer readable media” as used herein includes computerstorage media. Computer storage media includes volatile and nonvolatile,removable and non-removable media implemented in any method ortechnology for storage of information such as computer readableinstructions or other data. Memory 1018 and storage 1020 are examples ofcomputer storage media. Computer storage media includes, but is notlimited to, RAM, ROM, EEPROM, flash memory or other memory technology,CD-ROM, Digital Versatile Disks (DVDs) or other optical storage,magnetic cassettes, magnetic tape, magnetic disk storage or othermagnetic storage devices, or any other medium which can be used to storethe desired information and which can be accessed by device 1012. Anysuch computer storage media is part of device 1012.

The term “computer readable media” includes communication media.Communication media typically embodies computer readable instructions orother data in a “modulated data signal” such as a carrier wave or othertransport mechanism and includes any information delivery media. Theterm “modulated data signal” includes a signal that has one or more ofits characteristics set or changed in such a manner as to encodeinformation in the signal.

Device 1012 includes input device(s) 1024 such as keyboard, mouse, pen,voice input device, touch input device, infrared cameras, video inputdevices, or any other input device. Output device(s) 1022 such as one ormore displays, speakers, printers, or any other output device are alsoincluded in device 1012. Input device(s) 1024 and output device(s) 1022are connected to device 1012 via a wired connection, wirelessconnection, or any combination thereof. In some embodiments, an inputdevice or an output device from another computing device are used asinput device(s) 1024 or output device(s) 1022 for computing device 1012.Device 1012 also includes communication connection(s) 1026 to facilitatecommunications with one or more other devices.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter of the appended claims is not necessarilylimited to the specific features or acts described above. Rather, thespecific features and acts described above are disclosed as exampleforms of implementing the claims.

Various operations of embodiments are provided herein. The order inwhich some or all of the operations are described should not beconstrued as to imply that these operations are necessarily orderdependent. Alternative ordering will be appreciated by one skilled inthe art having the benefit of this description. Further, it will beunderstood that not all operations are necessarily present in eachembodiment provided herein.

It will be appreciated that layers, features, elements, etc. depictedherein are illustrated with particular dimensions relative to oneanother, such as structural dimensions and/or orientations, for example,for purposes of simplicity and ease of understanding and that actualdimensions of the same differ substantially from that illustratedherein, in some embodiments.

Further, unless specified otherwise, “first,” “second,” or the like arenot intended to imply a temporal aspect, a spatial aspect, an ordering,etc. Rather, such terms are merely used as identifiers, names, etc. forfeatures, elements, items, etc. For example, a first object and a secondobject generally correspond to object A and object B or two different ortwo identical objects or the same object.

Moreover, “exemplary” is used herein to mean serving as an example,instance, illustration, etc., and not necessarily as advantageous. Asused in this application, “or” is intended to mean an inclusive “or”rather than an exclusive “or”. In addition, “a” and “an” as used in thisapplication are generally be construed to mean “one or more” unlessspecified otherwise or clear from context to be directed to a singularform. Also, at least one of A and B and/or the like generally means A orB or both A and B. Furthermore, to the extent that “includes”, “having”,“has”, “with”, or variants thereof are used in either the detaileddescription or the claims, such terms are intended to be inclusive in amanner similar to the term “comprising”.

Also, although the disclosure has been shown and described with respectto one or more implementations, equivalent alterations and modificationswill occur to others skilled in the art based upon a reading andunderstanding of this specification and the annexed drawings. Thedisclosure includes all such modifications and alterations and islimited only by the scope of the following claims.

What is claimed is:
 1. A method for panorama stitching, comprising:storing, by a computing device, a first set of images comprising one ormore images in an image stack according to a first ordering preference,the first ordering preference associated with a first region of theimage stack; storing, by the computing device, a second set of imagescomprising one or more images in the image stack according to a secondordering preference, the second ordering preference associated with asecond region of the image stack; and generating a panorama imageincluding the first and second sets of images by stitching the first andthe second sets of images together according to a stitching priorityassociated with each region of the image stack.
 2. The method of claim1, wherein the first ordering preference comprises an earlier in timecriterion and the second ordering preference comprises a later in timecriterion.
 3. The method of claim 1, wherein the first orderingpreference comprises a foreground bias and the second orderingpreference comprises a background bias.
 4. The method of claim 1,wherein the first ordering preference comprises a manual capturecriterion and the second ordering preference comprises an automaticcapture criterion.
 5. The method of claim 1, further comprising:receiving an input corresponding to an image in the first set of imagesindicating the image is to be associated with the second region in theimage stack; and responsive to the input, associating the image with thesecond region.
 6. A method for panorama stitching, comprising:receiving, by a computing device, a new image; storing, by the computingdevice, the new image in a first region of an image stack according to afirst ordering preference, the image stack storing one or more existingimages and each existing image is stored according to the first orderingpreference or a different second ordering preference, wherein a firstportion of the existing images is stored in the first region of theimage stack and a second portion of the existing images is stored in adifferent second region of the image stack; and generating a panoramaimage including the first and second sets of images by stitching the newimage and the one or more existing images together according to a firststitching priority associated with the first region and a differentsecond stitching priority associated with the second region.
 7. Themethod of claim 6, wherein the first ordering preference comprises anearlier in time criterion and the second ordering preference comprises alater in time criterion.
 8. The method of claim 6, wherein the firstordering preference comprises a foreground bias and the second orderingpreference comprises a background bias.
 9. The method of claim 6,wherein the first ordering preference comprises a manual capturecriterion and the second ordering preference comprises an automaticcapture criterion.
 10. The method of claim 6, further comprising:receiving an input corresponding to the new image indicating the imageis to be associated with the second region in the image stack; andresponsive to the input, associating the new image with the secondregion.
 11. A system, comprising: one or more processors; and one ormore storage devices operably connected to the one or more processorsfor storing instructions, that when executed by the one or moreprocessors, cause the one or more processors to: store a first pluralityof images in an image stack according to a first ordering preference,the first ordering preference associated with a first region of theimage stack; store a second plurality of images in the image stackaccording to a different second ordering preference, the second orderingpreference associated with a second region of the image stack; andgenerate a panorama image including the first and the second pluralityof images by stitching the first and the second plurality of imagestogether according to stitching priorities associated with the first andthe second regions, wherein the first stitching priority is higher thanthe second stitching priority and each image associated with the firstregion of the image stack is stitched before each image associated withthe second region of the image stack.
 12. The system of claim 11,wherein the first ordering preference comprises an earlier in timecriterion and the second ordering preference comprises a later in timecriterion.
 13. The system of claim 11, wherein the first orderingpreference comprises a foreground bias and the second orderingpreference comprises a background bias.
 14. The system of claim 11,wherein the first ordering preference comprises a manual capturecriterion and the second ordering preference comprises an automaticcapture criterion.
 15. The system of claim 11, wherein: storing thefirst plurality of images in the image stack according to the firstordering preference, the first ordering preference associated with thefirst region of the image stack comprises storing the first plurality ofimages in a first region of the image stack according to the firstordering preference; and storing the second plurality of images in theimage stack according to the second ordering preference, the secondordering preference associated with the second region of the image stackcomprises storing the second plurality of images in a second region ofthe image stack according to the second ordering preference.
 16. Thesystem of claim 15, wherein the one or more storage devices storefurther instructions, that when executed by the one or more processors,cause the one or more processors to: receiving an input to modify aposition of an image in the image stack; and based on the input,reposition the image in the image stack such that the image is stored ina different region of the image stack.
 17. The method of claim 1,wherein the stitching priority of each region of the image stackdetermines the order in which each of the one or more images of thefirst set of images are stitched relative to each of the one or moreimages of the second set of images.
 18. The method of claim 17, whereineach of the images of the first set of images are newer than each of theimages of the second set of images, and when generating the panoramaimage, the first set of images are associated with a higher stitchingpriority than the second set of images based upon the age of the firstset of images and are stitched before the second set of images based onthe higher priority.
 19. The method of claim 17, wherein each of theimages of the first set of images are manually captured and each of theimages of the second set of images are automatically captured, and whengenerating the panorama image, the first set of images are associatedwith a higher stitching priority than the second set of images basedupon the manual capturing of the first set of images and are stitchedbefore the second set of images based upon the higher priority.
 20. Themethod of claim 17, wherein each of the images of the first set ofimages comprise a foreground bias and each of the images of the secondset of images comprise a background bias, and when generating thepanorama image, the first set of images are associated with a higherstitching priority than the second set of images based upon theforeground bias of the first set of images and are stitched before thesecond set of images based upon the higher priority.